package cms.api;

import cms.model.Channel;
import cms.model.ChannelTemplate;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

/**
 * Created by xhz on 2016/10/24.\
 * 栏目管理API
 */
public interface ChannelApi {

    /**
     * 根据模板类型查询模板
     * @return
     */
    public List<ChannelTemplate> getChannelTemplate(Integer templateType);

    /**
     * 根据模板类型、是否显示 查询模板
     * @param type
     * @param isDisplay
     * @param organizationId
     * @return
     */
    public List<Channel> getChannelModels(String[] type,Boolean isDisplay,String organizationId);

    /**
     * 保存栏目
     * @param channelVo
     * @return
     */
    public Map saveChannel(Channel channelVo);

    /**
     * 根据栏目id获取栏目实体
     * @param id
     * @return
     */
    public Channel findByChannelId(String id);

    /**
     * 查询所有栏目列表
     * @param pageable
     * @return
     */
    public Page<Channel> getAllChannel(Pageable pageable);

    /**
     * 查询合作机构栏目列表
     * @param pageable
     * @return
     */
    public Page<Channel> getAllChannelByOrganizationId(Pageable pageable);

    /**
     * 更新栏目显示顺序
     * @param channels
     * @return
     */
    public Map updateChannelDisplay(List<Channel> channels);

    /**
     * 根据id删除栏目
     * @param id
     * @return
     */
    public Map deleteChannel(String id);

    /**
     * 查询栏目文章
     * @param index 页码
     * @param channelNum  栏目数量
     * @param articleNum 文章数量
     * @param orgCode 机构代码
     */
    public Map<String,Object> findChannelArticle(Integer index,Integer channelNum,Integer articleNum,String orgCode);

    /**
     * 根据组织机构id获取该机构已存在的栏目数
     * @param orgId
     * @return
     */
    public Integer getChannelNumByOrganizationId(String orgId);

    public String toString();
}
